﻿ $(function($) {

 	$("#comit").off().on("click", function() {
 		alert("coverge");
 	});
 	$("#export").off().on("click", function() {
 		if ($('#measure_tab').data("rowData")) {
 			var value = JSON.stringify($('#measure_tab').data("rowData"));
 			//获取数值之后移除数据项  
 			$('#measure_tab').removeData("rowData");
 		}

 	});


 	function initGenTypeFlgDlg() {
 		//dropdownlist 放在window的init里面 不能初始化，
 		//如果使用$("#add_gen_type_dlg #gen_type_flg")符合选择器能够初始化,在使用过程中出现
 		// 每次加载页面都会初始化该控件，多次初始化的问题。
 		var typeFlg = $("#gen_type_flg").jqxDropDownList({
 			source: [],
 			theme: theme,
 			placeHolder: "选择机组分类：",
 			// displayMember: 'component_name',
 			// valueMember: 'component_type',
 			width: 95,
 			height: 20 //,popupZIndex: 999
 		});
 		typeFlg.update = function(type) {
 			var _this = $(this);
 			$.ajax({
 				type: "get",
 				url: "defaultData/Component_gen_type" + type + ".json",
 				dataType: "json",
 				complete: function() {
 					console.dir("加载机组类型[" + type + "]完成！");
 				}, //AJAX请求完成时隐藏loading提示
 				success: function(data) {
 					console.dir("加载机组类型[" + type + "]成功！");
 					//	var jsonData = $.parseJSON(data);
 					function emptyList() {
 						var items = _this.jqxDropDownList('getItems');
 						var length = items.length;
 						console.dir("total=" + length);
 						for (var i = 0; i < length; ++i) {
 							console.dir("remove:" + i);
 							//_this.jqxDropDownList('removeItem', items[i].label);
 							_this.jqxDropDownList('removeAt', i);

 						}

 					}
 					//由于一次remove不能完全删除item，所以需要两次调用删除
 					emptyList();
 					emptyList();

 					$.each(data, function() {
 						console.dir(this.label + "==" + this.value);
 						//_this.jqxDropDownList('addItem', this);
 						_this.jqxDropDownList('addItem', {
 							label: this.label,
 							value: this.value
 						});
 					});
 					_this.jqxDropDownList('selectIndex', 0);

 					// for (var j = 0; j < 10; j++) {
 					// 	_this.jqxDropDownList('addItem', {
 					// 		label: 'Text' + j,
 					// 		value: j
 					// 	});
 					// }
 				},
 				error: function(XMLHttpRequest, textStatus, errorThrown) {

 					console.warn("请求设备[" + type + "]分类数据失败！" + errorThrown);
 				}
 			});

 		}


 		var gen_type = $("#gen_type").jqxDropDownList({
 			source: getComponentList(),
 			theme: theme,
 			placeHolder: "选择机组类型：",
 			displayMember: 'component_name',
 			valueMember: 'component_type',
 			width: 95,
 			height: 20 //,popupZIndex: 999
 		}).on('select', function(event) {
 			var args = event.args;
 			var item = $(this).jqxDropDownList('getItem', args.index);
 			if (item != null) {

 				typeFlg.update(item.value);

 			}
 		});

 		//添加机组类型对话框


 		var add_gen_type_dlg = $('#add_gen_type_dlg').off().jqxWindow({
 			// maxHeight: 150,
 			// maxWidth: 280,
 			// minHeight: 30,
 			// minWidth: 250,
 			height: 185,
 			width: 195,
 			resizable: false,
 			isModal: true,
 			modalOpacity: 0.3,
 			theme: theme,
 			autoOpen: false,
 			okButton: $('#add_gen_type_dlg #ok'),
 			cancelButton: $('#add_gen_type_dlg #cancel'),
 			initContent: function() {
 				$('#add_gen_type_dlg #ok').jqxButton({
 					theme: theme,
 					width: '65px'
 				});
 				$('#add_gen_type_dlg #cancel').jqxButton({
 					theme: theme,
 					width: '65px'
 				});



 				$('#add_gen_type_dlg #ok').focus();
 			}
 		}).on("close", function(event) {
 			if (event.type === 'close') {

 				if (event.args.dialogResult.OK) {
 					var type = gen_type.jqxDropDownList('getSelectedItem');
 					var flg = typeFlg.jqxDropDownList('getSelectedItem');
 					//alert(type.label + "===" + flg.label);
 					if (flg == null)
 						console.warn("该设备不存在分类！");
 					var title = "<span style='float:left;line-height:20px'>" + flg.label + "</span>";
 					title += '<div  id=d_' + type + ' class="tab_box">  <button class="add"></button> <button class="delete"></button> <button class="edit"></button>  </div>'
 					var content = "<ul class='genlist' ></ul>"
 					$('#gen_tab').jqxTabs('addLast', title, content);
 					$('#gen_tab').jqxTabs('ensureVisible', -1);
 					//==================================================


 				} else if (event.args.dialogResult.Cancel) {

 				} else {

 				}
 			}
 		});
 		add_gen_type_dlg.show = function() {
 			$(this).jqxWindow("open");
 		}
 		return add_gen_type_dlg;
 	}
 	var add_gen_type_dlg = initGenTypeFlgDlg();

 	function initTypeGensDlg() {

 		var gensufix = $("#name_sufix").val("机组").jqxInput({
 			placeHolder: "",
 			height: 22,
 			width: 95,
 			minLength: 1
 		});
 		var beginno = $("#begin_no").val('1').jqxInput({
 			placeHolder: "",
 			height: 22,
 			width: 95
 		});
 		var totalnum = $("#total_num").val('1').jqxInput({
 			placeHolder: "",
 			height: 22,
 			width: 95
 		});

 		//=====================================================================
 		//机组类型中添加机组对话框
 		var add_type_gens_dlg = $('#add_type_gens_dlg').jqxWindow({
 			// maxHeight: 150,
 			// maxWidth: 280,
 			// minHeight: 30,
 			// minWidth: 250,
 			height: 185,
 			width: 195,
 			resizable: false,
 			isModal: true,
 			modalOpacity: 0.3,
 			theme: theme,
 			autoOpen: false,
 			okButton: $('#add_type_gens_dlg #ok'),
 			cancelButton: $('#add_type_gens_dlg #cancel'),
 			initContent: function() {
 				$('#add_type_gens_dlg #ok').jqxButton({
 					theme: theme,
 					width: '65px'
 				});
 				$('#add_type_gens_dlg #cancel').jqxButton({
 					theme: theme,
 					width: '65px'
 				});
 				$('#add_type_gens_dlg #ok').focus();


 			}
 		}).on("close", function(event) {
 			if (event.type === 'close') {

 				if (event.args.dialogResult.OK) {
 					//获取添加机组数据
 					function _callback_add() {
 						//获取名称
 						var gensufixName = gensufix.val();
 						// alert(gensufixName);
 						//获取起始编号
 						var beginNo = parseInt(beginno.val());
 						// alert(beginNo);
 						//获取编号数量
 						var totalNum = parseInt(totalnum.val());
 						// alert(totalNum);
 						for (var i = 0; i < totalNum; i++) {

 							var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 							var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist");
 							var eqpid = $.config.EqpId.get(); //window.getEqpId(); //获取唯一的设备id

 							var no = beginNo + i;
 							var aaa = $("<li></li>").html("#" + no + gensufixName).attr("id", window.eqpPrefix + eqpid).appendTo(genlist);
 						}
 					}
 					var arr = [];
 					var beginNo = parseInt(beginno.val());
 					// alert(beginNo);
 					//获取编号数量
 					var totalNum = parseInt(totalnum.val());
 					// alert(totalNum);
 					for (var i = 0; i < totalNum; i++) {
 						var no = beginNo + i;
 						arr.push(no);
 					}
 					var selectedItem = $('#gen_tab').jqxTabs('selectedItem');
 					var disabledItems = $('#gen_tab').jqxTabs('getDisabledTabsCount');
 					var items = $('#gen_tab').jqxTabs('length');



 					if (items > disabledItems + 1) {

 						//获取tab的id通过选择的tab的class 得到自定义的tab_box,然后获取tab_box的id，即为，该ID的类型ID
 						var idstr = $('#gen_tab').find(".jqx-tabs-title-selected-top").find(".tab_box").attr("id");
 						var idPrefix = "id_"
 						var id = idstr.substring(idPrefix.length);
 						addGens(id, arr, _callback_add);
 						//deleteGenByType(id, _callback_delete);

 					}


 				} else if (event.args.dialogResult.Cancel) {

 				} else {

 				}
 			}
 		});;
 		add_type_gens_dlg.show = function() {
 			$(this).jqxWindow("open");
 		}
 		return add_type_gens_dlg;
 	}
 	var add_type_gens_dlg = initTypeGensDlg();
 	//删除机组确认对话框
 	var gen_delete_dlg = $('#gen_delete_dlg').jqxWindow({
 		// maxHeight: 150,
 		// maxWidth: 280,
 		// minHeight: 30,
 		// minWidth: 250,
 		height: 185,
 		width: 195,
 		resizable: false,
 		isModal: true,
 		modalOpacity: 0.3,
 		theme: theme,
 		autoOpen: false,
 		okButton: $('#gen_delete_dlg #ok'),
 		cancelButton: $('#gen_delete_dlg #cancel'),
 		initContent: function() {
 			$('#gen_delete_dlg #ok').jqxButton({
 				theme: theme,
 				width: '65px'
 			});
 			$('#gen_delete_dlg #cancel').jqxButton({
 				theme: theme,
 				width: '65px'
 			});
 			$('#gen_delete_dlg #ok').focus();
 		}
 	}).on("close", function(event) {
 		if (event.type === 'close') {

 			if (event.args.dialogResult.OK) {
 				var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 				var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist").find("li");

 				function _callback_delete() {
 					$(genlist).each(function() {
 						//$(this).removeClass("selected");
 						if ($(this).hasClass("selected")) {
 							console.dir("删除！" + $(this).html() + "==" + this.id);
 							//alert(this.id);
 							//同时删除对应的ID
 							$.config.EqpId.remove(this.id.substring($.config.eqpPrefix.length));
 							//window.removeEqpId(this.id.substring(window.eqpPrefix.length));
 							$(this).remove();

 						}
 					});
 				}
 				var arr = [];
 				$(genlist).each(function() {
 					//$(this).removeClass("selected");
 					if ($(this).hasClass("selected")) {
 						arr.push(this.id.substring($.config.eqpPrefix.length));
 					}
 				});
 				deleteGens(arr, _callback_delete);

 			} else if (event.args.dialogResult.Cancel) {

 			} else {

 			}
 		}
 	});;
 	gen_delete_dlg.show = function(msg) {
 		$(this).find("#msg").html(msg);
 		$(this).jqxWindow("open");
 	}
 	//编辑机组提示对话框
 	var gen_edit_dlg = $('#gen_edit_dlg').jqxWindow({
 		// maxHeight: 150,
 		// maxWidth: 280,
 		// minHeight: 30,
 		// minWidth: 250,
 		height: 185,
 		width: 195,
 		resizable: false,
 		isModal: true,
 		modalOpacity: 0.3,
 		theme: theme,
 		autoOpen: false,
 		okButton: $('#gen_edit_dlg #ok'),
 		cancelButton: $('#gen_edit_dlg #cancel'),
 		initContent: function() {
 			$('#gen_edit_dlg #ok').jqxButton({
 				theme: theme,
 				width: '65px'
 			});
 			$('#gen_edit_dlg #cancel').jqxButton({
 				theme: theme,
 				width: '65px'
 			});
 			$('#gen_edit_dlg #ok').focus();
 		}
 	}).on("close", function(event) {
 		if (event.type === 'close') {

 			if (event.args.dialogResult.OK) {
 				//设置当前编辑获取当前编辑的机组列表数组
 				var editGenList = [];
 				var editGenNameList = [];
 				var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 				var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist").find("li.selected");
 				//如果一条都没有选择，直接提示，将对该tab下的所有机组都进行编辑。
 				if (genlist.length == 0)
 					var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist").find("li");
 				$(genlist).each(function() {
 					//$(this).removeClass("selected");
 					// if ($(this).hasClass("selected")) {
 					editGenNameList.push($(this).html());
 					//获取机组的id，dom中的id是eqpPrefix+设备id的形式，所以需要substring取出后面的纯数字ID
 					editGenList.push(this.id.substring($.config.eqpPrefix.length));

 					// }
 				});
 				gPageParam.configPage.gensName = editGenNameList;
 				gPageParam.configPage.gens = editGenList;
 				// alert(editGenList.join('|'));

 				$("#dlg_body").load("component_gen.html");

 			} else if (event.args.dialogResult.Cancel) {

 			} else {

 			}
 		}
 	});;
 	gen_edit_dlg.show = function(msg) {
 		$(this).find("#msg").html(msg);
 		$(this).jqxWindow("open");
 	}

 	//设置 tab右侧工具栏的宽度为100  流5px的空隙
 	$("#gen_tab_layout").width($("#gen_layout").width() - 130); /*刚打开页面和之后页面size变化gen_layout的大小是不一样的*/
 	$(window).resize(function() {
 		$("#gen_tab_layout").width($("#gen_layout").width() - 135);
 	}).on("close", function(event) {
 		if (event.type === 'close') {

 			if (event.args.dialogResult.OK) {
 				alert("ok");

 			} else if (event.args.dialogResult.Cancel) {

 			} else {

 			}
 		}
 	});

 	//建立tab，并建立 selected和unselected事件
 	$('#gen_tab').jqxTabs({
 		width: '100%',
 		height: '99%',
 		theme: theme,
 		scrollPosition: 'both'

 	}).on('selected', function(event) {
 		var index = event.args.item;
 		var box;
 		//children 只考虑最近一层的后代 不会考所有的后代 find 或考虑所有的后代
 		if (box = $("#gen_tab ul li").eq(index).find(".tab_box")) {
 			//只有被选中的tab显示 工具按钮
 			box.show();
 		}


 	}).on('unselected', function(event) {
 		var index = event.args.item;
 		var box;
 		//第一个tab没有#tab_box项 
 		if (box = $("#gen_tab ul li").eq(index).find(".tab_box")) {
 			//没有被选择的tab，不显示工具按钮
 			box.hide();
 		}

 	});
 	// 读取现在已经配置的信息
 	function loadConfigedGens() {
 		$.ajax({
 			type: "get",
 			url: "defaultData/Component_gen_by_type.json",
 			dataType: "json",
 			complete: function() {
 				console.dir("加载当前机组配置完成！");
 			}, //AJAX请求完成时隐藏loading提示
 			success: function(data) {
 				console.dir("加载当前机组配置成功！");
 				//加载机组类型 为数组结构，至少为空[],不需要if(data)
 				$.each(data, function(index, name, id, gens) {

 					var title = "<span style='float:left;line-height:20px'>" + this.name + "</span>";
 					title += '<div  id=d_' + this.id + ' class="tab_box">  <button class="add"></button> <button class="delete"></button> <button class="edit"></button>  </div>'
 					var content = "<ul class='genlist' ></ul>"
 					$('#gen_tab').jqxTabs('addLast', title, content);
 					$('#gen_tab').jqxTabs('ensureVisible', -1);

 					var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 					var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist");
 					//机组有可能没有下属机组防止没有配置机组
 					if (this.gens) {
 						$.each(this.gens, function() {
 							//console.dir(this.name + "===" + this.id);
 							var aaa = $("<li></li>").html(this.name).attr("id", this.id).appendTo(genlist);

 						});
 					}
 				});

 			},
 			error: function(XMLHttpRequest, textStatus, errorThrown) {

 				console.warn("加载机组配置数据失败！" + errorThrown);
 			}
 		});

 	}
 	loadConfigedGens();
 	///tab的按钮事件，添加，删除 ，编辑
 	$("#gen_tab").on("click", "button", function(event) {


 		var boxAction = {
 			add: function(type) {
 				add_type_gens_dlg.show();

 			},
 			delete: function(type) {
 				var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 				var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist").find("li.selected");
 				gen_delete_dlg.show("当前选中" + genlist.length + "台机组，确认删除！");


 			},
 			edit: function(type) {
 				var editGenList = [];
 				var editGenNameList = [];
 				var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 				var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist").find("li.selected");
 				var gencount = genlist.length;
 				//获取被选择的gen的条数，没有选择记录时，将当前tab下的所有机组作为选择记录
 				//选择为多个的时候，以第一条记录为编辑核心，对其他机组的配置项进行自动同步，默认为编辑项的同步。可以强制为覆盖式同步。
 				//只有一条记录的时候直接编辑，并保存。
 				if (gencount == 0) {
 					gen_edit_dlg.show("<p>当前没有选择任何机组，本次编辑，将以选择的第一台机组为参照进行编辑。<br>且.本次编辑将改变该类型的所有机组的属性！</br></p>");

 				} else if (gencount == 1) {
 					$(genlist).each(function() {
 						editGenNameList.push($(this).html());
 						//获取机组的id，dom中的id是eqpPrefix+设备id的形式，所以需要substring取出后面的纯数字ID
 						editGenList.push(this.id.substring($.config.eqpPrefix.length));

 					});
 					gPageParam.configPage.gensName = editGenNameList;
 					gPageParam.configPage.gens = editGenList;
 					$("#dlg_body").load("component_gen.html");
 				} else {
 					gen_edit_dlg.show("当前选择" + gencount + "台机组！本次编辑，将以选择的第一台机组为参照进行编辑。且，本次编辑将改变所选机组的属性！");
 				}


 				// 
 			}

 		};
 		//获取tab的id
 		var idstr = $(this).parent().attr("id");
 		var idPrefix = "id_"
 		var id = idstr.substring(idPrefix.length);
 		boxAction[this.className](id); //根据className调用对应的操作函数

 	});

 	//genlist 鼠标点击事件
 	$("#gen_tab").on("mousedown", ".genlist", function(event) {

 		if (event.button == 2) //右键点击空白处，所有选择
 		{
 			var value = $("#gen_tab").jqxTabs('val'); //获取当前选择的tab
 			var genlist = $('#gen_tab').jqxTabs('getContentAt', value).children(".genlist");
 			$(genlist.find("li")).each(function() {
 				$(this).removeClass("selected");
 			});

 		}
 	});
 	//genlist中的li 项 的item事件 ，点击鼠标之后移动鼠标，经过的项都会被选择上
 	$("#gen_tab").on("mousedown", ".genlist li", function(event) {
 		if (event.button == 0) // 只有左键能够选择
 		{
 			$(this).toggleClass("selected");
 			$("#gen_tab").on("mouseover", ".genlist li", function(event) {
 				$(this).toggleClass("selected");
 			});
 		} else if (event.button == 2) //右键点击item弹出右键菜单
 		{
 			// original click event.
 			var clickEvent = event;
 			//========================在row上点击的事件，将不会再treewidget的ckick事件中处理
 			if (clickEvent && clickEvent.stopPropagation) {
 				//W3C取消冒泡事件
 				clickEvent.stopPropagation();
 			} else {
 				//IE取消冒泡事件
 				clickEvent.cancelBubble = true;
 			}
 		}
 	});
 	//拖动过程中 鼠标按键取消，中断当前移动选择
 	$("#gen_tab").on("mouseup", ".genlist li", function(event) {

 		$("#gen_tab").off("mouseover", ".genlist li");
 	});


 	//  右侧 增加，删除按钮

 	$("#toolbar button").jqxButton({
 		theme: theme,
 		height: '90',
 		width: '90',
 	}).on('click', function(event) {

 		var toolAction = {
 			add: function() {

 				add_gen_type_dlg.show();



 			},
 			delete: function() {

 				var selectedItem = $('#gen_tab').jqxTabs('selectedItem');
 				var disabledItems = $('#gen_tab').jqxTabs('getDisabledTabsCount');
 				var items = $('#gen_tab').jqxTabs('length');

 				function _callback_delete() {
 					$('#gen_tab').jqxTabs('removeAt', selectedItem);
 				}

 				if (items > disabledItems + 1) {

 					//获取tab的id通过选择的tab的class 得到自定义的tab_box,然后获取tab_box的id，即为，该ID的类型ID
 					var idstr = $('#gen_tab').find(".jqx-tabs-title-selected-top").find(".tab_box").attr("id");
 					var idPrefix = "id_"
 					var id = idstr.substring(idPrefix.length);
 					deleteGenByType(id, _callback_delete);

 				}

 			}
 		};
 		var clickedButton = event.target;
 		toolAction[clickedButton.id]();
 		//$("#eventsLog").text("Clicked: " + clickedButton[0].id);
 	});

 	//=========================================================================
 	//提交添加，删除数据
 	//1.添加机组类型，不提交数据
 	//2.删除机组类型，直接删除，服务端判断是否新添加的。删除执行完成，返回成功结果。
 	//3.添加机组类型中的机组，直接提交机组类型ID和添加机组列表数组，在服务端直接对机组数据进行插入。返回操作结果。
 	//4.删除机组类型中的机组，直接提交删除机组列表ID数组，在服务端，直接删除对应机组队列的所有相关数据。
 	//5.编辑机组，根据选择情况，有有选择，直接使用选择的机组数组，无选择，根据当前类型，将当前数组所有机组加入带编辑机组数组。
 	//  并传入机组数据编辑界面。进行机组数据编辑。提交机组编辑结果，顺便提交所有数据。
 	//6.对多机组编辑的时候，默认同步编辑更改字段。如果需要，根据选择同步所有字段。


 	//根据类型删除机组
 	function deleteGenByType(id, callBack) {
 		var arr = {
 			id: id
 		};
 		$.config.postData("defaultData/action/deleteGenByType.json", id, callBack);
 	}
 	//根据机组数组删除机组
 	function deleteGens(arr, callBack) {
 		var arr = {
 			arr: arr
 		};
 		$.config.postData("defaultData/action/deleteGens.json", arr, callBack);
 	}
 	//添加机组
 	//type 机组类型
 	//type 机组编号数组
 	function addGens(type, arr, callBack) {
 		var arr = {
 			arr: arr
 		};
 		$.config.postData("defaultData/action/addGens.json", arr, callBack);
 	}


 });